Altri articoli sul numero 73 Fabio Bettinini ha incontrato un problema molto fastidioso: da quando ha installato la scheda Cyberstorm 040/40 sul suo A4000, il 30-40% delle immagini IFF a 24 bit che carica o registra sui suoi hard disk AT-bus risultano casualmente corrotte. Il primo dubbio riguarda il fatto che il problema e' saltuario, e cioe' ripetendo il caricamento piu' volte si ottengono sempre risultati diversi, in contrasto con la natura digitale dei dati che secondo Fabio dovrebbe assicurare una ripetibilita' dei risultati...o dei guasti. Quando si afferma che un computer opera su dati digitali si dimentica facilmente che in realta' i circuiti lavorano esaminando il valore di una tensione, che e' una grandezza analogica: un computer che funzioni su principi fisici intrinsecamente digitali e' per ora solo un sogno, nonostante sia da sempre oggetto di studi e ricerche. La maggior parte degli sforzi dei progettisti non e' rivolta allo studio delle reti logiche che formano il calcolatore: essendo un problema di natura matematica su argomenti ampiamente noti, una volta chiarite le ipotesi di partenza porta automaticamente ad una soluzione esatta (salvo che in casi particolari, come Intel insegna). La cosa realmente difficile e' garantire che ogni segnale, nessuno escluso, venga consultato solo quando la sua tensione assume un valore associabile senza ambiguita' ad un livello logico 0 o 1. Questa condizione e' il fondamento di tutto, ma sfortunatamente e' anche una imposizione fisicamente molto impegnativa che si regge sul perfetto funzionamento e collegamento di milioni di transistor. Di conseguenza quasi tutti i guasti comportano la sua violazione, che si manifesta sotto forma di errori intermittenti (blocchi di sistema, corruzione dei dati) quando il caso spinge la tensione della linea guasta o sovraccarica ad un valore non piu' nettamente distinguibile: puo' bastare una minuscola variazione della tensione di rete, o un impulso di rumore che in un circuito sano passerebbe inosservato per cambiare un 1 in uno 0 e viceversa. Un blocco di sistema e' il comportamento estremo di un computer che ha "qualcosa che non va"; molto piu' spesso si verifica una corruzione dei dati che passa prevalentemente inosservata. Si rivela solo quando si da' un comando che comporta l'esecuzione ripetuta molte volte dell'azione non piu' perfettamente deterministica (a causa di un guasto o incompatibilita') mentre si fa uso di meccanismi di verifica che la segnalano. Il caso di Fabio (caricamento di un IFF a 24 bit) e' tra i piu' tipici: i file di questo tipo sono di solito molto lunghi (trasferendo molti byte cresce la probabilita' che uno si alteri), e il programma effettua un controllo di integrita' che segnala immediatamente l'errore. Una situazione molto simile si verifica manipolando archivi compressi (es: lha, zip ecc.). Per individuare le cause del problema e rimuoverle (o metterci una pezza) bisogna rintracciare il percorso seguito dai dati ed esaminare ogni tappa. Se l'hard disk fosse SCSI, la prima cosa da controllare e' il cablaggio della catena SCSI e il chip controllore di bus (WD33C93A ecc.), come spiegato piu' volte in precedenza. Un'altra causa di corruzione molto comune, se il controller non e' sulla motherboard, e' il rumore elettrico sul bus di espansione dovuto e incompatibilita' tra schede, rottura di uno slot (gli ultimi due slot in alto su A4000 sono particolarmente delicati), overclock della motherboard o difetto del controller stesso. A volte i problema cambia di frequenza lasciando inserito il solo controller o spostandolo di slot. Nel caso del controller AT-bus incorporato di A600, A1200 e A4000 vale quanto spiegato sul numero 65: la scheda acceleratrice cambia le temporizzazioni dell'interfaccia per hard disk (cosa evidentissima anche solo notando la variazione di velocita' dei dischi), e cio' puo' far esplodere quelle situazioni innescate da combinazioni tra hard disk non ben gestite dalla scsi.device di Amiga. AT-bus e' uno standard formalizzato in tempi recentissimi e dove Commodore aveva poca esperienza, a differenza di SCSI (per il quale l'interoperabilita' a livello del software e' una certezza). Altro elemento che puo' causare corruzione dei dati e' la RAM, entro la quale per forza di cose devono transitare i dati: non e' infrequente che moduli o chip si rompano improvvisamente senza motivo apparente. Di solito in guasto e' plateale, ma in rari casi due celle vanno in cortocircuito tra loro oppure qualche bit resta bloccato allo stato 1 oppure 0 (questo genere di difetti solitamente e' esasperato dalla temperatura elevata). Gli Amiga, sopratutto A3000 e A4000, hanno una complicata gestione dei bus dati con moltissimi buffer e circuiti smistatori. Se i diagnostici indicano un errore di memoria, e' molto probabile che la colpa sia di uno di questi chip. In particolare su A500 e' frequentissima la rottura di uno dei chip 74LS244 oppure 74LS373, con vistose corruzioni anche del video: per la sostituzione si puo' usare un 74HCT244 o 74HCT373. Usando alcuni modelli di schede acceleratrici si possono verificare problemi di compatibilita' con le espansioni di memoria, perche' la CPU 68030 o 68040 durante il ciclo di bus acquisisce i dati in un momento diverso rispetto al 68000 o 68020. Lo stesso tipo di problemi si manifesta su alcuni (rari) A4000 lanciando il programma di patch che elimina uno stato di attesa sulla memoria (reperibile su Aminet). La posizione ufficiale di Commodore era che il funzionamento in questo modo "veloce" non e' affidabile.